<?php
/**
 * Created by PhpStorm.
 * User: dell
 * Date: 2018/7/30
 * Time: 21:01
 */

namespace wechat\core;
use wechat\Wx;

/**
 *签名类
 */
class Jssdk extends Wx
{
    /**
     * 生成签名方法
     */
    public function makeSign(){
//        随机字符串
        $noncestr=$this->makeStr();
//        jssdk
        $jsapi_ticket=$this->getJsApiTicket();
        $timestamp=time();
        $url = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
//        步骤1. 对所有待签名参数按照字段名的ASCII 码从小到大排序（字典序）后，使用URL键值对的格式（即key1=value1&key2=value2…）拼接成字符串string1：
        $arr=[
            'noncestr='.$noncestr,
            'jsapi_ticket='.$jsapi_ticket,
            'timestamp='.$timestamp,
            'url='.$url,
        ];
//        从小到大排序（字典序)   将（数组，排序）
        sort($arr,SORT_STRING);
//        将数组变成字符串  将字符串以&符进行分割
        $str = implode($arr,'&');
        //步骤2. 对string1进行sha1加密
        $sign = sha1($str);
//        字段名和字段值都采用原始值，不进行URL 转义。
        $array = [
            'sign'=>$sign,
            'timestamp'=>$timestamp,
            'nonceStr'=>$noncestr,
            'appId'=>'wx051616c0a941e4a3',
            'url'=>$url,
        ];
        return $array;





    }

    /**
     * 随机字符串方法
     */
    public function makeStr(){
        $seed= '1asd2ergt3jyu4ppl5okm6ujn';
        $str='';
        for ($i=0;$i<8;$i++){
            $num=mt_rand(0,strlen($seed)-1);
            $str = $seed[$num];
        }
        return $str;
    }
}

